/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package escom.ipn.modelo.dao;

/**
 *
 * @author db2admin
 */

import escom.ipn.modelo.dto.MovilClass;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;


import java.util.ArrayList;
import java.util.List;


public class adminMovilDAO {
/**
 *
 * @author db2admin
 */
    
    public static final String SQL_INSERT =
            "insert into radio_comunicacion(nombre,CAT_ESTADO_RECURSO_id_estado_recurso,asignado,ip, descripcion)"
            + " values(?,1,0,?,?)";
//insert into radio_comunicacion(id_radio,nombre,CAT_ESTADO_RECURSO_id_estado_recurso,asignado,ip, descripcion) values(0,"Sin Radio Asignado",1,0,"null","no hay radios disponibles");
//update radio_comunicacion set id_radio=0 where nombre="Sin Radio Asignado";
     public static final String SQL_UPDATE =
             "update radio_comunicacion set nombre=?,"
                              + "ip=?,"
                              + "descripcion=? "
                              + "where id_radio=?";
     
    public static final String SQL_SELECT_ALL =
            "select * from radio_comunicacion";
    
    private static final String SQL_DELETE =
            "delete from radio_comunicacion where id_radio = ?";
    
    public static final String SQL_SELECT =
            "select * from radio_comunicacion where id_radio=? ";
    
    
     public void insertMovil(MovilClass a, Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        try {
            ps = conn.prepareStatement(SQL_INSERT);
            ps.setString(1, a.getNombre());
            ps.setString(2, a.getIp());
            ps.setString(3, a.getDescripción());
            ps.executeUpdate();
        } 
        finally {
            cerrar(ps);
            cerrar(conn);
        } 
     }
    
    public List loadAll(Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_SELECT_ALL);
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return resultados;
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
        }
    }
    public void updateMovil(MovilClass a, Connection cnn) 
            throws SQLException {
         PreparedStatement ps = null;
        try {
            ps = cnn.prepareStatement(SQL_UPDATE);
            ps.setString(1, a.getNombre());
            ps.setString(2, a.getIp());
            ps.setString(3, a.getDescripción());
            ps.setInt(4, a.getId());
            ps.executeUpdate();

        } finally {
            cerrar(ps);
            cerrar(cnn);
        } 
    }
    public List loadSelect(MovilClass a, Connection cnn) 
        throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = cnn.prepareStatement(SQL_SELECT);
            ps.setInt(1, a.getId());
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return resultados;
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(cnn);
        }
    }
    
        public void borrarMovil(MovilClass a,Connection conn) 
        throws SQLException {
        PreparedStatement ps = null;

        try {
            ps = conn.prepareStatement(SQL_DELETE);
            ps.setInt(1,a.getId());
            ps.executeUpdate();
        } finally {
            cerrar(ps);
            cerrar(conn);
          
        }
   }
    
    
    
    private void cerrar(Connection cnn) {
        if (cnn != null) {
            try {
                cnn.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(PreparedStatement ps) {
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }
    
    private List getResults(ResultSet rs)
            throws SQLException {
        List results = new ArrayList();
        while (rs.next()) {
            MovilClass a = new MovilClass();
            a.setId(rs.getInt(1));
            a.setNombre(rs.getString("nombre"));
            a.setIp(rs.getString("ip"));
            a.setDescripción(rs.getString("descripcion"));
            a.setAsignado(rs.getInt("asignado"));
            
            results.add(a);
        }
        return results;
    }

    
    

}
